home *** CD-ROM | disk | FTP | other *** search
- ;-------T-------T------------------------T----------------------------------;
- ;This demo draws a pixel on a screen without destroying the background.
-
- INCDIR "GMSDev:Includes/"
- INCLUDE "dpkernel/dpkernel.i"
-
- SECTION "DrawPixel",CODE
-
- ;===========================================================================;
- ; INITIALISE DEMO
- ;===========================================================================;
-
- STARTDPK
-
- Start: MOVEM.L A0-A6/D1-D7,-(SP)
- move.l DPKBase(pc),a6
- lea FILE_Background(pc),a0 ;Load the picture.
- moveq #ID_PICTURE,d0
- CALL Load
- move.l d0,PIC_Background
- beq.s .Exit
-
- moveq #ID_SCREEN,d0
- CALL Get
- move.l d0,Screen
- beq.s .Exit
-
- move.l PIC_Background(pc),a0
- move.l Screen(pc),a1
- CALL CopyStructure
-
- move.l Screen(pc),a0
- sub.l a1,a1
- CALL Init
- tst.l d0
- beq.s .Exit
-
- moveq #ID_JOYDATA,d0 ;Get joydata structure.
- CALL Get
- move.l d0,JoyData
- beq.s .Exit
- move.l d0,a0 ;Initialise the joydata structure.
- sub.l a1,a1
- CALL Init
- tst.l d0
- beq.s .Exit
-
- move.l PIC_Background(pc),a0
- move.l PIC_Bitmap(a0),a0
- move.l Screen(pc),a1
- move.l GS_Bitmap(a1),a1
- CALL Copy
-
- move.l Screen(pc),a0
- CALL Show
-
- bsr.s Main
-
- .Exit move.l DPKBase(pc),a6
- move.l JoyData(pc),a0
- CALL Free
- move.l Screen(pc),a0
- CALL Free
- move.l PIC_Background(pc),a0
- CALL Free
- MOVEM.L (SP)+,A0-A6/D1-D7
- moveq #ERR_OK,d0
- rts
-
- ;===========================================================================;
- ; MAIN LOOP
- ;===========================================================================;
-
- Main: moveq #100,d6
- moveq #100,d7
- .loop move.l BLTBase(pc),a6
-
- ;Replace the background pixel.
-
- move.l Screen(pc),a0
- move.l GS_Bitmap(a0),a0
- movem.w OldPixel(pc),d1/d2/d3
- tst.w d3
- blt.s .read
- CALL bltDrawPixel ;>> = Draw the old background pixel.
-
- ;Read the new background pixel.
-
- .read move.l Screen(pc),a0
- move.l GS_Bitmap(a0),a0
- move.w d6,d1 ;d1 = X Coordinate.
- move.w d7,d2 ;d2 = Y Coordinate.
- CALL bltReadPixel ;>> = Read the pixel.
- movem.w d6/d7,OldPixel ;MA = Save coords of next pixel.
- move.w d0,OldPixel+4 ;MA = Save colour of next pixel.
-
- ;Draw the pixel.
-
- move.l Screen(pc),a0
- move.l GS_Bitmap(a0),a0
- move.w d6,d1 ;d1 = X Coordinate.
- move.w d7,d2 ;d2 = Y Coordinate.
- move.w #3,d3 ;d3 = Colour.
- CALL bltDrawPixel ;>> = Draw our pixel.
-
- move.l SCRBase(pc),a6
- CALL scrWaitAVBL ;>> = Wait for VBL.
-
- move.l DPKBase(pc),a6
- move.l JoyData(pc),a0
- CALL Query
- move.l JoyData(pc),a0
- add.w JD_YChange(a0),d7
- add.w JD_XChange(a0),d6
- move.l JD_Buttons(a0),d0
- btst #JB_LMB,d0
- beq.s .loop
- rts
-
- OldPixel:
- dc.w 0,0,-1
-
- ;===========================================================================;
- ; DATA
- ;===========================================================================;
-
- JoyData: dc.l 0
- Screen: dc.l 0
- PIC_Background: dc.l 0
- FILE_Background: FILENAME "GMS:demos/data/PIC.Green"
-
- ;===========================================================================;
-
- ProgName: dc.b "Draw Pixel",0
- ProgAuthor: dc.b "Paul Manias",0
- ProgDate: dc.b "January 1998",0
- ProgCopyright: dc.b "DreamWorld Productions (c) 1996-1998. Freely distributable.",0
- ProgShort: dc.b "Pixel demonstration.",0
- even
-
-